package com.t2t.top.create.$02abstractfactory;

import com.t2t.top.create.$03singleton.SingletonX;
import com.t2t.top.create.$03singleton.SingletonXX;

/**
 * 描述：工厂方法模式有一个问题就是，类的创建依赖工厂类，也就是说，如果想要拓展程序，必须对工厂类进行修改，这违背了闭包原则
 * <p/>
 * 场景：举一个发送邮件和短信的例子
 * <p/>
 * 抽象工厂模式（Abstract Factory）
 * <p/>
 * 优点：如果你现在想增加一个发及时信息的功能，则只需做一个实现类，实现Sender接口，同时做一个工厂类，实现Provider接口，就OK了.
 * 无需去改动现成的代码。这样做，拓展性较好！
 */
public class Test {

    public static void main(String[] args) {
        Provider provider = new SendMailFactory();
        Sender sender = provider.produce();
        sender.Send();
    }
}  